import java.util.ArrayList;
import java.util.List;

/**
 * Created by zhourh on 2018/8/2.
 * 不使用任何内建的哈希表库设计一个哈希集合

 具体地说，你的设计应该包含以下的功能

 add(value)：向哈希集合中插入一个值。
 contains(value) ：返回哈希集合中是否存在这个值。
 remove(value)：将给定值从哈希集合中删除。如果哈希集合中没有这个值，什么也不做。

 *
 */
public class MyHashSet {

    private List<List<Integer>> values = new ArrayList(100);

    /** Initialize your data structure here. */
    public MyHashSet() {
        for (int i = 0; i < 100; i++) {
            values.add(null);
        }
    }

    public void add(int key) {
        if (key < 0) {
            return;
        }

        int index = key % 100;

        List<Integer> subValues = values.get(index);
        if (subValues == null) {
            subValues = new ArrayList<>();
            values.set(index, subValues);
        }

        if (!subValues.contains(key)) {
            subValues.add(key);
        }
    }

    public void remove(int key) {
        if (key < 0) {
            return;
        }

        int index = key % 100;
        List<Integer> subValues = values.get(index);
        if (subValues == null) {
            return;
        }

        subValues.remove(new Integer(key));
    }

    /** Returns true if this set did not already contain the specified element */
    public boolean contains(int key) {
        if (key < 0) {
            return false;
        }

        int index = key % 100;
        List<Integer> subValues = values.get(index);
        if (subValues == null) {
            return false;
        }

        return subValues.contains(key);
    }

}
